home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1983-09-29 | 3.8 KB | 144 lines |
- 10 SCREEN 0: WIDTH 40:COLOR 14,1,12
- 20 CLS
- 30 KEY OFF
- 40 RANDOMIZE TIMER
- 50 GOSUB 1310'SONG
- 60 C(1)=INT(RND*6)'Creates four diff random numbers
- 70 C(2)=INT(RND*6)'FROM 0 TO 5
- 80 IF C(2)=C(1)THEN 70
- 90 C(3)=INT(RND*6)
- 100 IF C(3)=C(1) OR C(3)=C(2) THEN 90
- 110 C(4)=INT(RND*6)
- 120 IF C(4)=C(1) OR C(4)=C(2) OR C(4)=C(3) THEN 110
- 130 FOR R=1 TO 4
- 140 IF C(R)=0 THEN C(R)=70
- 150 IF C(R)=1 THEN C(R)=77
- 160 IF C(R)=2 THEN C(R)=72
- 170 IF C(R)=3 THEN C(R)=68
- 180 IF C(R)=4 THEN C(R)=67
- 190 IF C(R)=5 THEN C(R)=83
- 200 NEXT R
- 210 LOCATE 2,13,0,7
- 220 PRINT "** MASTERMIND **"
- 230 PRINT " ##################"
- 240 PRINT " by Les Penner"
- 250 PRINT:PRINT:PRINT
- 260 PRINT"The computer has selected four"
- 270 PRINT "different symbols from a choice"
- 280 PRINT "of six and placed them in a sequence."
- 290 PRINT
- 300 PRINT "The choices are: ";CHR$(3);"=H"
- 310 PRINT
- 320 PRINT TAB(18);CHR$(4);"=D"
- 330 PRINT
- 340 PRINT TAB(18);CHR$(5);"=C"
- 350 PRINT
- 360 PRINT TAB(18);CHR$(6);"=S"
- 370 PRINT
- 380 PRINT TAB(18);CHR$(14);"=M"
- 390 PRINT
- 400 PRINT TAB(18);CHR$(2);"=F"
- 410 PRINT
- 420 INPUT "PRESS <ENTER> TO CONTINUE ",S$
- 430 CLS
- 440 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
- 450 PRINT"Positioning with the space bar, try"
- 460 PRINT"to guess the objects as the computer"
- 470 PRINT "has arranged them. The computer "
- 480 PRINT "will tell you how many of the ob-"
- 490 PRINT"jects are correct and whether they "
- 500 PRINT"are in the right or wrong positions."
- 520 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
- 530 INPUT"PRESS <ENTER> TO CONTINUE ",E$:CLS
- 540 DIM PLY(20,15)
- 550 DIM A$(20,5):PT=0:PCOL=1
- 560 DIM TABLE(20,3)'**SCORE TABLE
- 570 FOR T=1 TO 15
- 580 FOR COL=1 TO 4
- 590 A$(T,COL)="-" 'initializes array
- 600 NEXT COL
- 610 NEXT T
- 630 PT=PT+1:PCOL=1' INCREMENT TURN
- 850 GOSUB 1080'prints current array
- 860 IF PT<16 THEN 2000 ELSE 870
- 870 LOCATE 3,10
- 880 FOR L=1 TO 4
- 890 IF C(L)=70 THEN PRINT CHR$(2);" ";
- 900 IF C(L)=77 THEN PRINT CHR$(14);" ";
- 910 IF C(L)=72 THEN PRINT CHR$(3);" ";
- 920 IF C(L)=68 THEN PRINT CHR$(4);" ";
- 930 IF C(L)=67 THEN PRINT CHR$(5);" ";
- 940 IF C(L)=83 THEN PRINT CHR$(6);" ";
- 950 NEXT L
- 960 IF FLAG=0 THEN 1020'--LOSE ENDING
- 970 LOCATE 10, 30
- 980 COLOR 20,3
- 990 PRINT" YOU "
- 1000 LOCATE 11,30
- 1010 PRINT " WIN ! "
- 1020 COLOR 4,3
- 1030 LOCATE 13,30:PRINT"PRESS <F2>
- 1040 LOCATE 14,30:PRINT"TO RESTART
- 1050 COLOR 14,1
- 1060 LOCATE 21,1,0
- 1070 END
- 1080 CLS:PRINT
- 1090 LOCATE 2,18:PRINT"(RIGHT***CHOICE) WRONG"
- 1100 LOCATE 3,18:PRINT" RT-POS WR-POS CHOICE
- 1110 LOCATE 3,1:PRINT "COMPUTER ? ? ? ?":PRINT
- 1120 FOR T=1 TO 15
- 1130 PRINT "TURN";T;
- 1140 IF T<10 THEN PRINT" ";
- 1150 IF T=>10 THEN PRINT " ";
- 1160 FOR COL=1 TO 4
- 1170 PRINT A$(T,COL);" ";
- 1180 NEXT COL
- 1190 IF T< PT THEN PRINT" ";TABLE(T,1);" ";TABLE(T,2);" ";TABLE(T,3);
- 1200 PRINT
- 1210 NEXT T
- 1220 PRINT STRING$(40,22);
- 1230 PRINT" "; CHR$(3);"=H ";CHR$(4);"=D ";CHR$(5);"=C ";CHR$(6);"=S ";CHR$(14);"=M ";CHR$(2);"=F"
- 1245 PRINT:PRINT"<SPACE BAR> to move, <ENTER>=Try These
- 1260 T=1:POSITION=0:RIGHT=0
- 1270 IF FLAG =1 THEN 870'subroutine for showing correct answer
- 1280 IF PT=16 THEN 870'SHOW ANSWER AFTER 15 TRIES
- 1285 LOCATE PT+4,10:COLOR 30,3 :PRINT "-";:COLOR 14,1
- 1290 RETURN
- 1300 END
- 1310 PLAY"T145 MB O3EEECDGECFGECD<B>C"'INTRO SONG
- 1320 RETURN
- 1330 PLAY"MB O1L3CL8DL4E-L4CL3G"'lose song
- 1340 RETURN
- 1350 PLAY "MB T160 MS O4L6CFG A GFGL3A FF"'win song
- 1360 RETURN
- 2000 '******* start of keyboard scanning routine
- 2005 IN$=INKEY$: IF IN$="" GOTO 2005
- 2010 IF IN$=CHR$(32) THEN GOTO 3100'--<SPACE BAR> PRESSED
- 2025 IF IN$=CHR$(13) AND A$(PT,1)<>"-" AND A$(PT,2)<>"-" AND A$(PT,3)<>"-"AND A$(PT,4)<>"-" GOTO 2660'----<ENTER> HAS BEEN PRESSED
- 2030 IF IN$="F" OR IN$="f" THEN PLY(PT,PCOL)=70: A$(PT,PCOL)=CHR$(2):GOTO 2058
- 2035 IF IN$="M" OR IN$="m" THEN PLY(PT,PCOL)=77:A$(PT,PCOL)=CHR$(14):GOTO 2058
- 2040 IF IN$="H" OR IN$="h" THEN PLY(PT,PCOL)=72:A$(PT,PCOL)=CHR$(3):GOTO 2058
- 2042 IF IN$="D" OR IN$="d" THEN PLY(PT,PCOL)=68:A$(PT,PCOL)=CHR$(4):GOTO 2058
- 2045 IF IN$="C" OR IN$="c" THEN PLY(PT,PCOL)=67:A$(PT,PCOL)=CHR$(5):GOTO 2058
- 2050 IF IN$="S" OR IN$="s" THEN PLY(PT,PCOL)=83: A$(PT,PCOL)=CHR$(6):GOTO 2058
- 2055 BEEP:GOTO 2005
- 2058 LOCATE PT+4,PCOL*2+8:COLOR,3:PRINT A$(PT,PCOL):COLOR,1
- 2060 GOTO 2005
- 2660 FOR PCOL=1 TO 4
- 2740 FOR R=1 TO 4
- 2750 IF PLY(PT,PCOL)=C(R) AND PCOL=R THEN POSITION=POSITION+1
- 2760 IF PLY(PT,PCOL)=C(R) AND PCOL<>R THEN RIGHT =RIGHT+1
- 2770 NEXT R
- 2780 WRONG=4-RIGHT-POSITION
- 2790 NEXT PCOL
- 2800 TABLE(PT,3)=WRONG: TABLE(PT,1)=POSITION
- 2810 TABLE(PT,2)=RIGHT
- 2820 IF POSITION =4 THEN FLAG=1
- 2830 IF FLAG=1 THEN GOSUB 1350
- 2840 IF FLAG=0 THEN GOSUB 1330
- 2850 GOTO 630
- 3100 LOCATE PT+4,PCOL*2+8:COLOR ,1:PRINT A$(PT,PCOL)
- 3110 PCOL=(PCOL)MOD 4+1
- 3160 LOCATE PT+4,PCOL*2+8:COLOR 30,3 :PRINT A$(PT,PCOL):COLOR 14,1
- 3170 GOTO 2005
-